
const express = require("express")
const RoleController = require("../../controllers/RoleController")

const router = express.Router()
/**
 * @api {get} /system/role 查询角色
 * @apiName find-role
 * @apiGroup Role
 * @apiVersion 0.1.0
 * @apiParam  {Number} [limit] 页码.
 * @apiParam  {Number} [size] 条目数.
 * @apiParam  {String} [rolename] 角色名称.
 * @apiParam  {Boolean} [status] 角色状态.
 * @apiParam  {String} [createTime] 创建时间.
 * @apiParam  {String} [describe] 角色描述.
 *
 * @apiSuccess {String} code 状态码.
 * @apiSuccess {String} msg  提示消息.
 * @apiSuccess {Null} data  返回数据.
 *
 * @apiParamExample  {type} 请求示例:
 * 
 * {
 *      limit:1, // 页码
 *      size:10, // 数量
 * }
 * 
 * @apiSuccessExample 成功返回结果:
 * 
 *  {
 *       code:"200",
 *       msg:"角色查询成功",
 *       data:data,
 *       total:total
 *  }
 *
 * @apiError {String} code 状态码.
 * @apiError {String} msg  提示消息.
 * @apiError {Null} data  返回数据.
 *
 * @apiErrorExample 错误返回结果:
 *   
 *   {
 *       code:"400",
 *       msg:"角色查询失败",
 *       data:null
 *   }
 */
/**
 * @api {post} /system/role 添加角色
 * @apiName append-role
 * @apiGroup Role
 * @apiVersion 0.1.0
 *
 * @apiParam  {String} rolename 角色名称.
 * @apiParam  {Boolean} status 角色状态.
 * @apiParam  {String} [describe] 角色描述.
 * @apiParam  {Array} [menus] 角色绑定的菜单列表.
 *
 * @apiSuccess {String} code 状态码.
 * @apiSuccess {String} msg  提示消息.
 * @apiSuccess {Null} data  返回数据.
 *
 * @apiParamExample  {type} 请求示例:
 * 
 * {
 *      rolename:"超级管理员",
 *      status:true,
 *      menus:["菜单ID"]
 * }
 * 
 * @apiSuccessExample 成功返回结果:
 * 
 *  {
 *       code:"200",
 *       msg:"角色添加成功",
 *       data:null,
 *  }
 *
 * @apiError {String} code 状态码.
 * @apiError {String} msg  提示消息.
 * @apiError {Null} data  返回数据.
 *
 * @apiErrorExample 错误返回结果:
 *   
 *   {
 *       code:"400",
 *       msg:"角色添加失败",
 *       data:null
 *   }
 */
/**
 * @api {put} /system/role 修改角色
 * @apiName  modify-role
 * @apiGroup Role
 * @apiVersion 0.1.0
 *
 * @apiParam  {String} _id 角色ID.
 * @apiParam  {String} rolename 角色名称.
 * @apiParam  {Boolean} status 角色状态.
 * @apiParam  {String} [describe] 角色描述.
 * @apiParam  {Array} [menus] 角色绑定的菜单列表.
 *
 * @apiSuccess {String} code 状态码.
 * @apiSuccess {String} msg  提示消息.
 * @apiSuccess {Null} data  返回数据.
 *
 * @apiParamExample  {type} 请求示例:
 * 
 * {
 *      _id:ID
 *      rolename:"超级管理员",
 *      status:true,
 *      menus:["菜单ID"]
 * }
 * 
 * @apiSuccessExample 成功返回结果:
 * 
 *  {
 *       code:"200",
 *       msg:"角色修改成功",
 *       data:null,
 *  }
 *
 * @apiError {String} code 状态码.
 * @apiError {String} msg  提示消息.
 * @apiError {Null} data  返回数据.
 *
 * @apiErrorExample 错误返回结果:
 *   
 *   {
 *       code:"400",
 *       msg:"角色修改失败",
 *       data:null
 *   }
 */
/**
 * @api {delete} /system/role 删除角色
 * @apiName  delete-role
 * @apiGroup Role
 * @apiVersion 0.1.0
 *
 * @apiParam  {String} _id 角色ID.
 *
 * @apiSuccess {String} code 状态码.
 * @apiSuccess {String} msg  提示消息.
 * @apiSuccess {Null} data  返回数据.
 *
 * @apiParamExample  {type} 请求示例:
 * {
 *  _id:ID
 * }
 * 
 * @apiSuccessExample 成功返回结果:
 * 
 *  {
 *       code:"200",
 *       msg:"角色删除成功",
 *       data:null,
 *  }
 *
 * @apiError {String} code 状态码.
 * @apiError {String} msg  提示消息.
 * @apiError {Null} data  返回数据.
 *
 * @apiErrorExample 错误返回结果:
 *   
 *   {
 *       code:"400",
 *       msg:"角色删除失败",
 *       data:null
 *   }
 */
/**
 * @api {put} /system/user 修改角色排列顺序
 * @apiName modify-roleSort
 * @apiGroup Role
 * @apiVersion 0.1.0
 *
 * @apiParam  {String} _id 角色唯一标识 必填项.
 * @apiParam  {Number} sort 排序 必填项.
 * @apiParam  {String} type=sort 操作类型.
 *
 * @apiSuccess {String} code 状态码.
 * @apiSuccess {String} msg  提示消息.
 * @apiSuccess {Null} data  返回数据.
 *
 * @apiParamExample  {type} 请求示例:
 * 初始数据：[
 *      {_id:"2131456461534",sort:1,rolename:"admin",...},
 *      {_id:"d123541115464",sort:2,rolename:"other",...},
 * ]
 * 上传的数据：
 * {
 *     type:"sort",
 *     data:[
 *            {_id:"2131456461534",sort:2,rolename:"admin",...},
 *            {_id:"d123541115464",sort:1,rolename:"other",...},
 *          ]
 * }
 * 
 * @apiSuccessExample 成功返回结果:
 * 
 *  {
 *       code:"200",
 *       msg:"排序成功",
 *       data:null
 *  }
 *
 * @apiError {String} code 状态码.
 * @apiError {String} msg  提示消息.
 * @apiError {Null} data  返回数据.
 *
 * @apiErrorExample 错误返回结果:
 *   
 *   {
 *       code:"400",
 *       msg:"排序失败",
 *       data:null
 *   }
 */
router.get("/system/role", RoleController.find)
router.post("/system/role", RoleController.append)
router.put("/system/role", RoleController.update)
router.delete("/system/role/:id", RoleController.remove)

module.exports = router